

%*********************************************

\subsection{Idea general}

Dada la simplicidad del programa, la mayor parte del código es dedicado simplemente a parsear la línea de comando y a controlar y mostrar posibles errores, la única funcionalidad del programa es implementada en la función \textbf{write\_pgm\_image}, que finalmente escribe la imagen que representa el tablero hacia el flujo indicado, consiste simplemente en un par de ciclos \textit{for} anidados.


\subsection{Implementación}

Se resolvió el problema dividiéndolo en sectores y así construirlo de una forma mas fácil y clara.\\
\begin{itemize}
\item Hay un sector encargado de recibir y parsear los parámetros.
\item Hay un sector encargado de ejecutar los comandos.
\item Hay un sector encargado de escribir los resultados de las imágenes.
\item Hay un sector encargado de recibir e imprimir errores.
\end{itemize}


\subsection{Proceso de la línea de comando}

El proceso de la línea de comando se hace mediante el uso de la función \textbf{GNU} \textit{\quotemarks{getopt\_long}}, no se trata de una función \textbf{ANSI}, pero se encuentra presente en la mayoría de los *IX de código abierto, en particular las plataformas utilizadas, \platformhost\space y \platformguest, mediante el uso de la función mencionada se logra fácilmente un proceso completo de la línea de comando, con comprobación completa de errores, que incluye opciones no válidas, mal formaciones, duplicación de opciones, falta de parámetros y además sin importar el orden o la agrupación de las opciones o si se usa la versión corta o larga de las mismas.
Se asumió que al no pasarse alguna de las opciones \textbf{-o} y \textbf{-r}, se debía proceder usando opciones default, las cuales son salida por \textbf{stdout} y una resolución de \textbf{8x8}.\\


\subsection{Descripción de las bibliotecas más relevantes}

\textbf{PGM}: Se utiliza en el desarrollo del programa el altamente portable paquete \textbf{Netpbm}, mediante el formato \textbf{PGM} (portable graymap format), este formato como indica su nombre permite el guardado de imágenes en escala de grises, en particular, para el caso nuestro el valor máximo usado para los pixeles y que corresponde al color blanco, es 1, con lo que se tiene una imagen monocromática.
Se utiliza el caracter especial de newline (nueva linea) al final de cada fila.\\
\\


\begin{flushleft}
\Needspace*{15\baselineskip}

El estándar de Netpbm establece los \textit{\quotemarks{magic numbers}} según la siguiente tabla:\\

\begin{table}[!h]
\centering
\begin{tabular}{ccc}
%\begin{tabularx}{\textwidth}{ XX }

\toprule

\multicolumn{1}{|>{\columncolor{Aluminium1}}c|}{Magic Number}& 
\multicolumn{1}{>{\columncolor{Aluminium1}}c|}{Type}&
\multicolumn{1}{>{\columncolor{Aluminium1}}c|}{Encoding}
\\
\hline

\multicolumn{1}{|>{\columncolor{white}}c|}{P1}& 
\multicolumn{1}{>{\columncolor{white}}c|}{Portable bitmap}&
\multicolumn{1}{>{\columncolor{white}}c|}{ASCII}
\\
\hline

\multicolumn{1}{|>{\columncolor{white}}c|}{P2}& 
\multicolumn{1}{>{\columncolor{white}}c|}{Portable graymap}&
\multicolumn{1}{>{\columncolor{white}}c|}{ASCII}
\\
\hline

\multicolumn{1}{|>{\columncolor{white}}c|}{P3}& 
\multicolumn{1}{>{\columncolor{white}}c|}{Portable pixmap}&
\multicolumn{1}{>{\columncolor{white}}c|}{ASCII}
\\
\hline

\multicolumn{1}{|>{\columncolor{white}}c|}{P4}& 
\multicolumn{1}{>{\columncolor{white}}c|}{Portable bitmap}&
\multicolumn{1}{>{\columncolor{white}}c|}{Binary}
\\
\hline

\multicolumn{1}{|>{\columncolor{white}}c|}{P5}& 
\multicolumn{1}{>{\columncolor{white}}c|}{Portable graymap}&
\multicolumn{1}{>{\columncolor{white}}c|}{Binary}
\\
\hline

\multicolumn{1}{|>{\columncolor{white}}c|}{P6}& 
\multicolumn{1}{>{\columncolor{white}}c|}{Portable pixmap}&
\multicolumn{1}{>{\columncolor{white}}c|}{Binary}
\\
\bottomrule
		
\end{tabular}

\caption{\label{tab:pgmtb}\footnotesize{Especificación de los formatos de la familia \textbf{Netpbm}.}}
\end{table}
\end{flushleft}

\normalfont
\normalsize

\vspace{1cm}

En nuestro caso, se utilizo por requerimiento del enunciado el \textit{magic number} \textbf{P2}, que corresponde a un archivo de tipo \textbf{Portable graymap}.\\



\clearpage
